hvm: Add global default keymap setting
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Fri, 6 Jul 2007 15:16:57 +0000 (16:16 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Fri, 6 Jul 2007 15:16:57 +0000 (16:16 +0100)
Add global default keymap setting to be used when a VM does not have
a keymap configuration set.

Signed-off-by: Pat Campbell <plc@novell.com>
tools/examples/xend-config.sxp
tools/python/xen/xend/XendConfig.py
tools/python/xen/xend/XendOptions.py
tools/python/xen/xend/server/vfbif.py

index aaddbee076de23808069049ed112ba9dcb7599db..adbb9e6b6985b3b0336a16a78dde36ce9607272a 100644 (file)
 # The default password for VNC console on HVM domain.
 # Empty string is no authentication.
 (vncpasswd '')
+
+# The default keymap to use for the VM's virtual keyboard
+# when not specififed in VM's configuration
+#(keymap 'en-us')
+
+
index 17628f337a45bb36ea77201a8bbfcdb85db90f1b..0773724919c02f62d327dc1fc756eac76166e6c0 100644 (file)
@@ -22,6 +22,7 @@ import types
 
 from xen.xend import sxp
 from xen.xend import uuid
+from xen.xend import XendOptions
 from xen.xend import XendAPIStore
 from xen.xend.XendError import VmError
 from xen.xend.XendDevices import XendDevices
@@ -392,6 +393,9 @@ class XendConfig(dict):
 
     def _platform_sanity_check(self):
         if self.is_hvm():
+            if 'keymap' not in self['platform'] and XendOptions.instance().get_keymap():
+                self['platform']['keymap'] = XendOptions.instance().get_keymap()
+
             if 'device_model' not in self['platform']:
                 self['platform']['device_model'] = DEFAULT_DM
 
index 73de5a39c3a05923dd3377bb072d2f2e2103a513..af0922078220077afa893d7818d7636bb064b2be 100644 (file)
@@ -278,6 +278,9 @@ class XendOptions:
         return self.get_config_string('vncpasswd',
                                      self.vncpasswd_default)
 
+    def get_keymap(self):
+        return self.get_config_value('keymap', None)
+
 class XendOptionsFile(XendOptions):
 
     """Default path to the config file."""
index cbef190248551abc3266e8085a087a7236d0ba2f..eb1990e64ff9130c79703a4c7772d68b5360ac56 100644 (file)
@@ -76,6 +76,11 @@ class VfbifController(DevController):
             args += [ "--listen", vnclisten ]
             if config.has_key("keymap"):
                 args += ["-k", "%s" % config["keymap"]]
+            else:
+                xoptions = xen.xend.XendOptions.instance()
+                if xoptions.get_keymap():
+                    args += ["-k", "%s" % xoptions.get_keymap()]
+
             spawn_detached(args[0], args + std_args, os.environ)
         elif t == "sdl":
             args = [xen.util.auxbin.pathTo("xen-sdlfb")]